> ## Documentation Index
> Fetch the complete documentation index at: https://sequence-0fb8d9e6-api_docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Unreal Ecosystem Wallet Authentication

> Ecosystem Wallet Documentation for Sequence's Unreal SDK.

Start with an implicit session which is restricted to contracts built by Sequence.
Alternatively, you can choose to add a [Permissions](/sdk/unreal/wallets/ecosystem-wallet/permissions) object to each Sign In call, if you want to connect to an
explicit session directly.

### Get Ecosystem Config

Get configuration data from the Ecosystem. This includes data such as the name, description, enabled chains and auth providers.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-api_docs/WB8SVVzKwBtb0HK7/images/unreal/ecosystem/get_ecosystem_config.png?fit=max&auto=format&n=WB8SVVzKwBtb0HK7&q=85&s=f9f2fefb4dcd2a08d58c9c89abc5274d" width="1910" height="930" data-path="images/unreal/ecosystem/get_ecosystem_config.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FEcosystemConfig> SuccessCallback = [this, OnSuccess](const FEcosystemConfig& Config)
    {
        // Ecosystem Name: Config.Name
        // Supported Chains: Config.SupportedChains
        // Auth Providers: Config.EnabledProviders
    };

    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->GetEcosystemConfig(SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Email

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-api_docs/FFhkfZMEs3Sxq_XK/images/unreal/ecosystem/sign_in_email.png?fit=max&auto=format&n=FFhkfZMEs3Sxq_XK&q=85&s=e1c37cfc9ed96b89be59ab62fd87192e" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_email.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithEmail(Email, Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Google

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-api_docs/FFhkfZMEs3Sxq_XK/images/unreal/ecosystem/sign_in_google.png?fit=max&auto=format&n=FFhkfZMEs3Sxq_XK&q=85&s=aa6be77a151e34b5984de0aad5310153" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_google.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithGoogle(Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Apple

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-api_docs/FFhkfZMEs3Sxq_XK/images/unreal/ecosystem/sign_in_apple.png?fit=max&auto=format&n=FFhkfZMEs3Sxq_XK&q=85&s=bd3222506ad65bd32cabaad96fa3af4b" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_apple.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithApple(Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Passkey

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-api_docs/FFhkfZMEs3Sxq_XK/images/unreal/ecosystem/sign_in_passkey.png?fit=max&auto=format&n=FFhkfZMEs3Sxq_XK&q=85&s=1fb132fa59280de8b6fc9934d3e19095" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_passkey.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithPasskey(Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Mnemonic

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-api_docs/FFhkfZMEs3Sxq_XK/images/unreal/ecosystem/sign_in_mnemonic.png?fit=max&auto=format&n=FFhkfZMEs3Sxq_XK&q=85&s=eaaab8caf58e6d5e51704c6f4b741422" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_mnemonic.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithMnemonic(Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>
